package org.abstractmeta.commandify;

import org.abstractmeta.commandify.Commandify;
import org.abstractmeta.reflectify.Accessor;

/**
 * Self reference from owner commandify accessor
 * It is used to manged a field owner to owner relationship to bubble up to owner
 * all commands applied to any descendant field
 *
 * @param <O> owner type
 * @param <T> self type
 */
public interface OwnerSelfCommandifyAccessor<O, T> {

    Accessor<O, T> getAccessor();

    Commandify<O> getOwner();

    Object getSource();

}
